from pathlib import Path

from ultralytics import YOLO

# 直接加载训练好的模型（包含结构和权重）
model = YOLO(r'runs\detect\train12\weights\best.pt')

#预测图片的路径
ph=r'C:\Users\Leo78\Desktop\test_img\601.jpg'
# 进行预测

# 关键参数设置
results = model.predict(
    ph,           #路径
    save=True,      # 必须为True
    save_txt=True,  # 生成TXT标注文件
    save_conf=True, # 在TXT中包含置信度
    conf=0.01,      # 调低置信度阈值避免漏检
    iou=0.5,
    name='output'   # 自定义输出目录
)
# 确保即使没有检测到目标也生成空的txt文件
output_dir = Path("runs/detect/output/labels")  # 根据name参数确定的目录，注意这里默认是相对于当前工作目录
output_dir.mkdir(parents=True, exist_ok=True)

# 获取输入图像文件名（不含扩展名）
img_stem = Path(ph).stem
txt_path = output_dir / f"{img_stem}.txt"

# 若模型未生成文件，则创建空文件
if not txt_path.exists():
    with open(txt_path, "w") as f:
        pass  # 创建空文件
    print(f"⚠️ 未检测到目标，已创建空文件: {txt_path}")
else:
    print(f"✅ 标签文件已生成: {txt_path}")

